package com.muyu.payment.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.payment.domain.UserBalance;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 用户余额Mapper接口
 *
 * @author muyu
 * @date 2025-01-27
 */
@Mapper
public interface UserBalanceMapper extends BaseMapper<UserBalance> {

    /**
     * 根据用户ID查询余额
     *
     * @param userId 用户ID
     * @return 用户余额信息
     */
    UserBalance selectByUserId(@Param("userId") Long userId);

    /**
     * 增加用户余额（乐观锁）
     *
     * @param userId 用户ID
     * @param amount 增加金额
     * @param version 版本号
     * @return 影响行数
     */
    int increaseBalance(@Param("userId") Long userId, @Param("amount") java.math.BigDecimal amount, @Param("version") Integer version);

    /**
     * 减少用户余额（乐观锁）
     *
     * @param userId 用户ID
     * @param amount 减少金额
     * @param version 版本号
     * @return 影响行数
     */
    int decreaseBalance(@Param("userId") Long userId, @Param("amount") java.math.BigDecimal amount, @Param("version") Integer version);

}